package com.subang.function.mapper;

import java.util.List;
import java.util.Map;

import com.subang.function.domain.SbStudyMark;

/**
 * 学习打卡Mapper接口
 * 
 * @author subei
 * @date 2025-03-27
 */
public interface SbStudyMarkMapper 
{
    /**
     * 查询学习打卡
     * 
     * @param studyMarkId 学习打卡主键
     * @return 学习打卡
     */
    public SbStudyMark selectSbStudyMarkByStudyMarkId(String studyMarkId);

    /**
     * 查询学习打卡列表
     * 
     * @param sbStudyMark 学习打卡
     * @return 学习打卡集合
     */
    public List<SbStudyMark> selectSbStudyMarkList(SbStudyMark sbStudyMark);



    /**
     * 新增学习打卡
     * 
     * @param sbStudyMark 学习打卡
     * @return 结果
     */
    public int insertSbStudyMark(SbStudyMark sbStudyMark);

    /**
     * 修改学习打卡
     * 
     * @param sbStudyMark 学习打卡
     * @return 结果
     */
    public int updateSbStudyMark(SbStudyMark sbStudyMark);

    /**
     * 删除学习打卡
     * 
     * @param studyMarkId 学习打卡主键
     * @return 结果
     */
    public int deleteSbStudyMarkByStudyMarkId(String studyMarkId);

    /**
     * 批量删除学习打卡
     * 
     * @param studyMarkIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSbStudyMarkByStudyMarkIds(String[] studyMarkIds);

    /**
     * 根据用户ID集合统计今天打卡的人数
     * 
     * @param userIds 用户ID集合
     * @return 今天打卡的人数
     */
    public long countTodayMarkedUsersByIds(List<Long> userIds);

    public List<SbStudyMark> selectTodaySbStudyMarkList(SbStudyMark sbStudyMark);


    public List<SbStudyMark> selectTodaySbUnStudyMarkList(SbStudyMark sbStudyMark);

    public List<SbStudyMark> selectTodayUnmarkedUsersByGroup(String groupId);

    public List<SbStudyMark> selectYesterdayUnmarkedUsersByGroup(String groupId);

    public List<SbStudyMark> groupMonthUnPunchList(String groupId);

    public List<SbStudyMark> sumMonthStudyDurationByGroup(String groupId);

    public List<SbStudyMark> sumMonthQuestionCountByGroup(String groupId);

    List<Map<String, Object>> rankingInfo(Map<String, Object> params);
}
